home *** CD-ROM | disk | FTP | other *** search
/ Professional Soft Collection 1.02 / Professional Soft Collection 1.02.iso / winutils / wingauge.zip / WMETER.C < prev    next >
C/C++ Source or Header  |  1993-01-19  |  951b  |  43 lines

  1. #pragma hdrfile "WinGauge.SYM"
  2. #include <win31.h>
  3. #include "wingauge.h"
  4. #include "wingauge.rh"
  5. #pragma hdrstop
  6.  
  7. static    int    MySin( int ), MyCos( int );
  8.  
  9. #pragma    argsused
  10. void wmPaint( HDC hDC, short sOffset, WORD wNumber, PSTR szBuffer )
  11. { register short xCenter = sOffset+16,
  12.          yCenter = sOffset+32-6;
  13.  
  14.   MoveTo( hDC, xCenter, yCenter );
  15.   LineTo( hDC, xCenter - MyCos(wNumber), yCenter - MySin(wNumber) );
  16.  
  17.   SetTextColor( hDC, BLACK );
  18. }
  19.  
  20.  
  21. static const int aSinCos[] = { 2, 3, 3, 3, 3, 3, 4, 3, 5, 5, 7, 10 };
  22.  
  23. static int MySin( int iArg )
  24. { int i;
  25.  
  26.   if( iArg > 50 )
  27.     iArg = 100 - iArg;                // Sin 100-x = sin x
  28.   for( i=0; (iArg-=aSinCos[i]) >= 0; ++i )
  29.      ;
  30.   return i;
  31. }
  32.  
  33. static int MyCos( int iArg )
  34. { int  i;
  35.   BOOL fSign = FALSE;
  36.  
  37.   if( iArg > 50 )
  38.     { iArg = 100 - iArg;  fSign = TRUE; }    // Cos 100-x = -cos x
  39.   for( i=11; (iArg-=aSinCos[i]) >= 0; --i )
  40.      ;
  41.   return ( fSign ? -i : i );
  42. }
  43.